package com.example.m3;

import org.springframework.amqp.core.FanoutExchange;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;

import javax.annotation.PostConstruct;

@SpringBootApplication
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class, args);
    }
    // 创建 Queue 实例，封装队列参数
    @Bean
    public FanoutExchange fanoutExchange() {

        return new FanoutExchange("logs",false,false);
    }

    // 添加测试代码，调用生产者发送消息
    @Autowired
    private Producer p;
    /*
      spring 的执行流程：
      包扫描创建所有实例 --> 完成所有的依赖注入 --> @PostConstruct --> 后续流程
     */
    @PostConstruct
    public void test() {
        // 这里代码执行时，自动配置类有可能还没有创建队列，消费者可能也还没有启动
        // 第一次执行可能丢失消息
//       new Thread(new Runnable() {
//           @Override
//           public void run() {
//               p.send();
//           }
//       }).start();
        new Thread(()->p.send()).start();
    }
}